home *** CD-ROM | disk | FTP | other *** search
- ------------------------------------------------
- | BC-FORTRAN77 Vers.1.3b |
- | Copyright: Andre Koestli |
- | 1990 Martin-Luther-Str.63 |
- | D7000 Stuttgart 50 |
- |----------------------------------------------|
- |----------------------------------------------|
- | Die Version "b" von BC-FORTRAN77, bestehend |
- | aus den nachfolgend beschriebenen 5 Dateien, |
- | ist vollstaendig von mir programmiert. Ich |
- | gestatte freies Nutzungsrecht an Vers.b fuer |
- | nichtkommerzielle Anwendungen, alle Rechte |
- | bleiben jedoch bei mir, insbesondere ist der |
- | Verkauf der Vers.b, auch im Zusammenhang mit |
- | anderen Produkten, nicht erlaubt. Jeder Ko- |
- | pie ist dieser Text unveraendert beizufuegen.|
- | Die Anwendung fuer militaerische Zwecke oder |
- | entsprechende Forschung ist verboten! |
- | Juli 1990 A.Koestli |
- ------------------------------------------------
-
-
- BC-FORTRAN77 Version.b besteht aus Compiler, Linker,
- Modulbibliothek und einem residenten Laufzeitsystem, das
- u.a. einen einfachen Debugger enthaelt. Diese Version
- laeuft auf einem MS-DOS Rechner mit 640kB RAM. Eine
- Festplatte ist nicht erforderlich. Hiermit soll in
- einfacher Weise ein Compiler fuer Programmierkurse
- zur Verfuegung stehen. Dem kommt entgegen, dass
- entsprechende Compiler fuer ATARI ST und AMIGA existieren.
-
- Anfragen nach Zusendung einer anderen oder neueren Version
- werde ich nur noch beantworten, wenn DM 20.- (Schein oder
- Scheck) Aufwandsentschaedigung (Diskette, Umschlag, Porto
- und Zeit) beigefuegt sind. Ich versende ausschliesslich
- 3 1/2 Zoll Disketten.
-
-
-
- BC-FORTRAN77 Vers.b besteht aus folgenden Dateien:
-
- LIES.TXT Dieser Text
- BCF.EXE Compiler
- BCL.EXE Linker
- BCRTSY.EXE Residentes Laufzeitsystem.
- LIB.B Bibliothek mit Standardfunktionen
-
- Wird eine Kopie angefertigt, muessen immer alle Dateien
- unveraendert uebernommen werden.
-
-
-
- Installation.
- -------------
-
- BEVOR Compiler, Linker oder ein damit erzeugtes Programm
- gestartet wird, MUSS das residente Laufzeitsystem
- geladen sein. Dazu startet man das Programm BCRTSY.EXE.
- Soll BC-FORTRAN77 regelmaessig verwendet werden, so
- empfiehlt es sich, BCRTSY.EXE im AUTOEXEC.BAT zu starten.
-
- Die *.EXE Dateien werden in eine Directory kopiert, die
- im PATH enthalten ist, die Datei LIB.B gehoert in eine
- APPEND Directory (siehe die MS-DOS Befehle PATH und
- APPEND).
-
-
- Compiler
- --------
-
- Der Compiler wird gestartet mit
-
- BCF [-Option...] Datei...
-
- Enthaelt Datei keinen Punkt, so wird .F angehaengt.
- Die uebersetzte Form der Programme wird in Datei.B
- abgelegt.
-
- Beispiel:
-
- BCF -D TEST.F
-
- Uebersetzt TEST.F mit Debug-Option nach TEST.B
-
- BCF TEST SUB
-
- Uebersetzt TEST.F nach TEST.B und SUB.F nach SUB.B
-
- BCF TEST.X
-
- uebersetzt TEST.X nach TEST.B
-
-
- Compiler Optionen
- -----------------
-
- Statt -Option kann auch /Option verwendet werden.
-
- -D Debug, fasst -BVL zusammen.
-
- -B deBugcode, impliziert -H und erzeugt
- ausserdem Code fuer Debuggeraufrufe,
- zum Ueberpruefen von Feldgrenzen und
- Substrings.
-
- -H parcHeck, Code zum Ueberpruefen der Parameter-
- listen und auf Stackueberlauf erzeugen.
-
- -V Varlist: Variablenliste fuer Debugger.
-
- -L Lineslist: Zeilennummernliste fuer Debugger.
-
- -U Uppercase: Klein- in Grossbuchstaben wandeln
- (ausser in Characterkonstanten und
- Formaten). Fehlt diese Option, so sind
- xy, XY, Xy und xY vier verschiedene
- Variablen!
-
- -F Freeinput: Quellprogramm nicht im FORTRAN
- Format. Nichtstandart!
-
- -P Protokoll: Ausgabe der uebersetzten Zeilen.
-
- -S Kurzprotokoll: (Short) eine Zeile pro Modul
- mit groesse Stackframe und Code (Bytes).
-
- -O One: Nur einen Ausgabefile erzeugen, mit dem
- Namen des ersten Eingabefiles.
-
-
-
- Sprachumfang
- ------------
-
- BC-FORTRAN77 uebersetzt den vollstaendigen Standard nach
- ANSI/ISO. Der Sprachstandard wird allerdings durch
- einige Besonderheiten verletzt (meistens werden diese
- als Erweiterungen bezeichnet). Ich empfehle dringend,
- diese Dialektkonstrukte nicht zu verwenden, da sie nicht
- standardisiert und damit nicht genau definiert sind.
-
- Die wichtigsten dieser Besonderheiten:
-
- INTEGER*1 8 bit INTEGER
- INTEGER*2 16 bit INTEGER
- INTEGER*4 wie INTEGER
- LOGICAL*1 8 bit LOGICAL
- LOGICAL*2 16 bit LOGICAL
- LOGICAL*4 wie LOGICAL
- IMPLICIT NONE abschalten der impliziten Typdef.
- COMMON /%adr/ Absoluter Common, adr ist Konstante
- oder einfache Variable die die
- Segmentadresse angibt.
- EQUIVALENCE() zwischen Character und anderen Typen
- sowie Mischen im Common.
- Rekursive Unterprogrammaufrufe.
- Namen mit max. 8 Zeichen (Standart: 6).
-
-
- Als wichtigste Beschraenkungen gibt es:
-
- 32kB Code+SAVE/DATA pro Unterprogramm
- 32kB lokale Daten pro Unterprogramm (Stackframe)
- 32kB pro Common (eigentlich 64kB, aber die Adresse
- des letzten Feldes muss <32k sein)
- 700 Unterprogramme pro Datei
- 500 Verschiedene Commons pro Datei.
-
- Daneben gibt es eine Reihe von Beschraenkungen, die bei
- unvernuenftig grossen Unterprogrammen zu Fehlermeldungen
- fuehren, meistens waere dann aber ohnehin die 32kB Code
- Grenze ueberschritten.
-
-
- Linker
- ------
-
- Der Linker wird gestartet mit:
-
- BCL [-Optionen...] Datei...
-
- Enthaelt Datei keinen Punkt, so wird .B angehaengt.
- Die Programmdatei wird mit dem Namen der ersten Datei,
- aber mit .EXE statt .B, gespeichert.
- Es muss auch die Datei LIB.B aufgefuehrt werden, um die
- Standartfunktionen und die I/O-Routinen zum Programm
- dazu zu linken.
-
- Beispiel:
-
- BCL -S16 TEST SUB LIB
-
- oder
-
- BCL -S16 TEST.B SUB.B LIB.B
-
- Linkt die Dateien TEST.B und SUB.B und speichert unter
- TEST.EXE das lauffaehige Programm, das eine Stackgroesse
- von 16kB verwendet.
-
-
- Linker Optionen
- ---------------
-
- -Sn Stackgroesse fuer das zu erzeugende Programm
- wird auf n kB gesetzt (max. 64). Fehlt
- diese Option, so wird ein 64kB grosser
- Stack angenommen. Auf dem Stack werden
- alle lokalen Variablen/Felder einer
- Unterprogrammverschachtelung abgelegt.
-
- -O Optimiertes Linken: nirgends aufgerufene
- Unterprogramme werden weggelassen.
-
- -P Protokoll: Liste der Commonbloecke und
- Programmmodule.
-
-
-
- Beschraenkungen
- ---------------
-
- Die wichtigste Beschraenkung liegt in der RAM Groesse: die
- zu erzeugende Programmdatei (ohne Commons und Stack)
- kann maximal so gross sein, wie der groesste freie
- Speicherblock nach Laden von BCL. Andererseits kann, bei
- grossen Commons und Stack, auch ein Programm erzeugt
- werden, dass im vorhandenen RAM nicht gestartet werden
- kann.
-
- Die Anzahl Unterprogramme ist auf 3000, die Anzahl
- Commonbloecke auf 1500 beschraenkt. (Die laecherliche
- 640kB Begrenzung von MS-DOS duerfte davor greifen.)
-
-
- Laufzeitsystem
- --------------
-
- Das Laufzeitsystem BCRTSY.EXE enthaelt Routinen, die von
- einem FORTRAN77 Programm benoetigt werden und muss vor
- dem Programmstart resident geladen sein.
-
- BCRTSY enthaelt:
-
- Arithmetikroutinen:
- 32 bit INTEGER Multiplikation/Division
- REAL Arithmetik
- DOUBLE PRECISION Arithmetik
- Es wird das IEEE Gleitkommaformat verwendet,
- REAL: 7 Dezimalstellen, 32 bit
- 1 bit Vorzeichen, 8 bit Exp., 24 bit Mantisse.
- DOUBLE PRECISION: 14 Dezimalstellen, 64 bit
- 1 bit Vorzeichen, 11 bit Exp., 52 bit Mantisse.
- Ein mathematischer Koprozessor wird nicht
- unterstuetzt. (Eine 80x87/version exisiert,
- kann jedoch nicht getestet werden, da ich
- nicht ueber entsprechende Hardware verfuege.)
-
- CHARACTER Routinen
-
- Debugger:
- Ein einfacher Debugger zur Fehlersuche.
- Nach einem Laufzeitfehler wird von ihm eine
- Fehlermeldung ausgegeben und Eingabe erwartet.
- Der Debugger kann aber auch durch Druecken einer
- Taste aktiviert werden, um den Programmlauf zu
- unterbrechen, wenn das Programm mit B-Option
- uebersetzt wurde. Folgende Tasten erkennt der
- Debugger als Kommando:
-
- T (Traceback) Rueckverfolgung des Subroutine-Call
- Stacks, Ausgabe der naechsthoeheren Progunit
- Mit Zeilennummern, falls -L Option beim
- Compilieren verwendet wurde.
-
- U (Untrace) Macht alle Tracebackaktionen
- rueckgaengig. Dies geschieht auch implizit
- bevor der Programmlauf fortgesetzt wird.
-
- V Variablen des aktuellen Unterprogramms
- mit aktuellen Inhalten, falls mit -V
- Option uebersetzt wurde.
- Bezieht sich auf auf die zuletzt angezeigte
- Prog.unit, falls T gedrueckt wurde.
-
- Z Programm beenden.
-
- Leertaste Weiterrechnen, falls kein Lauf-
- zeitfehler auftrat.
-
- S Programmschritt (bis zum naechsten
- Label, Unterprogramm, ELSE, ENDIF, DO).
-
- C Unterprogrammschritt (bis zum naechsten
- CALL oder RETURN)
-
-
-
- Bibliothek
- ----------
-
- LIB.B enthaelt die mathematischen Funktionen im
- vollen vom Standard vorgeschriebenen Umfang.
- Wenn beim Linken Fehlermeldungen wie z.B.
-
- External nicht gefunden: f_SQRT
-
- auftauchen, so muss die LIB.B beim Aufruf von BCL
- mit angegeben werden.
-
-
- Programmstart
- -------------
-
- Eine von BCL erzeugte Programmdatei kann wie jedes
- andere Programm vom Desktop oder einer Shell aus
- gestartet werden.
-
-
- Fehlermeldungen
- ---------------
-
- Die Fehlermeldungen von Compiler, Linker und
- Laufzeitsystem sollten, bis auf die folgende Ausnahme,
- selbsterklaerend sein. Die vollstaendige Auflistung (26
- Seiten im Handbuch der Vers.P) wuerde den Rahmen dieser
- Beschreibung sprengen.
-
- IO-Error: Nummer
- Ein-/Ausgabefehler; kann abgefangen werden,
- indem im IO-Statement der IOSTAT= Parameter
- angegeben wird. Nummer ist derselbe Wert, der
- auch in der IOSTAT Variable zurueckgegeben wird.
-
- Nummer
-
- -1 Dateiende.
- -2 Dateiende inmitten eines Records.
- 1 Dateinummer bereits verwendet (OPEN).
- 2 Zu viele Dateien (OPEN). Max. 32 Dateien.
- 3 Dateiname zu lang (OPEN).Max. 31 Zeichen.
- 5 Dateinummer nicht eroeffnet. Nur die Nummern
- 5 und 6 koennen ohne OPEN verwendet werden.
- 6 Formatiert/unformatiert Widerspruch.
- 7 REC-Parameter fuer Datei mit ACCESS='SEQUENTIAL'
- 8 BACKSPACE, REWIND, ENDFILE fuer diese Datei
- nicht moeglich (AUX: und PRN:).
- 10 Internal I/O nur formatiert.
- 20 INTEGER Ueberlauf bei Eingabe.
- 21 Datenfehler bein Listengesteuerter Eingabe,
- z.B. fehlende Apostroph fuer Zeichenketten.
- 22 Unerwartetes Dateiende.
- 23 Record zu lang.
- 24 Lesefehler bei UNFORMATTED SEQUENTIAL.
- 30 Formatelement und I/O-Listelement passen nicht
- zusammen.
- INTEGER benoetigt ein I-Formatelement,
- REAL, DOUBLE PRECISION (COMPLEX) ein (zwei)
- F-, G-, E- oder D-Formatelemente,
- LOGICAL ein L-Formatelement,
- CHARACTER ein A-Formatelement.
- 31 Formatelement L: T oder F erwartet (Eingabe)
- 32 Formatelement I: unerwartetes Zeichen (Eingabe)
- Leerzeichen, Vorzeichen und Ziffern erlaubt.
- 33 Formatelemente E, F oder D: unerwartetes
- Zeichen (Eingabe).
- Leerzeichen, Vorzeichen, Ziffern,
- Dezimalpunkt, E, e, D oder d (fuer Exponent)
- erlaubt.
- 34 Zu viele ( in Format.
- 35 Zu viele ) in Format.
- 36 Ziffernfolge an unerlaubter Stelle in Format.
- 37 Formatelement nicht erkannt.
- 38 . fehlt in F, E, G oder D Formatelement.
- 39 4Htext oder 'text' in Format fuer READ.
- In FORTRAN66 konnte damit Text in ein Format
- hineingelesen werden; in FORTRAN77 nicht
- mehr erlaubt.
- 40 Exponent zu gross fuer gegebenes Format.
- 42 Formatelement zu lang. Max. Laenge des internen
- Recordpuffers (80 Zeichen).
- 43 Internal I/O, Record zu lang.
- 44 TL, Record zu lang. Ist ein Record laenger als
- der interne Recordpuffer, kann nicht mehr
- nach links tabuliert werden.
- 45 Feldlaenge 0 bei I,L,F,E,G,D Formatelement.
-
- 1000+n MS-DOS Error n
- 1002 Datei nicht gefunden.
- 1003 Directorypfad nicht gefunden.
- 1004 Zu viele Dateien.
- 1005 Zugriff nicht erlaubt.
- 1008 Nicht genuegend RAM frei.
- 1012 Zugriff nicht moeglich.
- 1015 Ungueltige Laufwerksbezeichnung.
-
-
-
-
- Probleme
- --------
-
- Die 80x87 Version ist nicht getestet und wird deshalb
- nicht mitgeliefert.
-
- ATAN2 und DATAN2 ergibt nicht in allen Quadranten korrekte
- Ergebnisse. (91-02-12)
-
- Fehler aller Art sollten auf jeden Fall schriftlich
- gemeldet werden.
-
-
-
-